#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

using namespace std;

typedef pcl::PointXYZI PointT;

void viewer(pcl::PointCloud<PointT> cloud, pcl::PointCloud<PointT>::Ptr cloud_res);
void savePCD(const string&  filename);
void KeyPointDetection(pcl::PointCloud<PointT>::Ptr cloud);
void ConvexHull(pcl::PointCloud<PointT>::Ptr cloud);
void Draw_Circle();
pcl::PointCloud<PointT> readPCD(const string&  filename);
pcl::PointCloud<PointT>::Ptr PlaneDetection(pcl::PointCloud<PointT> cloud, int Ksearch, int max_iterations, int distance_threshold);
pcl::PointCloud<PointT>::Ptr RorFilter(pcl::PointCloud<PointT>::Ptr cloud, int MinNeighbors, int Radius);
pcl::PointCloud<PointT>::Ptr passthrough(pcl::PointCloud<PointT>::Ptr cloud,const int coordinate);
pcl::PointCloud<PointT>::Ptr AftershadowZ(pcl::PointCloud<PointT>::Ptr cloud);
pcl::PointCloud<PointT>::Ptr boundary_search(pcl::PointCloud<PointT>::Ptr cloud, int Ksearch, int RadiusSearch);

